"""
question-1
给定一个整数数组 nums和一个整数目标值 target，请你在该数组中找出 和为目标值 target的那两个整数，并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是，数组中同一个元素在答案里不能重复出现。
example
输入：nums = [2,7,11,15], target = 9
输出：[0,1]
解释：因为 nums[0] + nums[1] == 9 ，返回 [0, 1] 。
"""

def solve(nums,target):
    """
    暴力搜索
    """
    for i in range(len(nums)-1):
        for j in range(i,len(nums)):
            if nums[i] + nums[j] == target:
                return [i,j]

def imporved_solve(nums,target):
    nums_dict = dict()
    for i, num in enumerate(nums):
        nums_dict[num] = i
    for first_id,num in enumerate(nums):
        res_num = target -num
        if res_num in nums_dict.keys():

            return first_id,nums_dict[res_num]


if __name__=="__main__":
    import time
    nums = [2,7,11,15 ]
    target = 18
    start = time.time()
    r = imporved_solve(nums,target)
    end = time.time()
    print(r,end-start)